"use strict";
const path = require("path");
function resolve(dir) {
  return path.join(__dirname, dir);
}

const port = 9520;
//引入filemanager-webpack-plugin插件-直接打包成zip压缩文件
const FileManagerPlugin = require("filemanager-webpack-plugin");
const env = process.env.NODE_ENV;
const publicPath = process.env.NODE_ENV === "production" ? "/boom/" : "/";

// All configuration item explanations can be find in https://cli.vuejs.org/config/
module.exports = {
  publicPath: publicPath, //部署应用包时的基本 URL
  outputDir: "./dist/dist" + publicPath, //输出文件目录，当运行 vue-cli-service build 时生成的生产环境构建文件的目录
  assetsDir: "static", //放置生成的静态资源 (js、css、img、fonts) 的目录
  indexPath: "index.html", //指定生成的 index.html 的输出路径 (相对于 outputDir)。也可以是一个绝对路径。
  lintOnSave: false, //是否在保存的时候使用 `eslint-loader` 进行检查。 有效的值：`ture` | `false` | `"error"`  当设置为 `"error"` 时，检查出的错误会触发编译失败。
  productionSourceMap: false, //如果你不需要生产环境的 source map，可以将其设置为 false 以加速生产环境构建。
  devServer: {
    port: port,
    open: true,
    overlay: {
      warnings: false,
      errors: false
    },
    // proxy: {
    //   '/getCaptcha': {
    //     target: process.env.VUE_APP_REQUEST_IP_PORT + '/Login/getCaptcha',
    //     changeOrigin: true,
    //     pathRewrite: {
    //       '^/getCaptcha': '/'
    //     }
    //   }
    // }
  },
  configureWebpack: {
    // provide the App's title in webpack's name field, so that
    // it can be accessed in home.html to inject the correct title.
    // name: name,
    resolve: {
      alias: {
        "@": resolve("src")
      }
    }
  },
  chainWebpack(config) {
    config.plugins.delete("preload"); // TODO: need test
    config.plugins.delete("prefetch"); // TODO: need test
    // set svg-sprite-loader
    config.module
      .rule("svg")
      .exclude.add(resolve("src/icons"))
      .end();
    config.module
      .rule("icons")
      .test(/\.svg$/)
      .include.add(resolve("src/icons"))
      .end()
      .use("svg-sprite-loader")
      .loader("svg-sprite-loader")
      .options({ symbolId: "icon-[name]" })
      .end();

    if (env === 'production') {
        config.plugin('compress')
            .use(FileManagerPlugin, [{
              onEnd: {
                delete: ['./func-boom-vue.zip'],
                archive: [{source: './dist', destination: './func-boom-vue.zip'}]
              }
            }])
            .end()
    }
  }
};
